// 防抖：在一段时间内多次触发同一个事件，只执行最后一次触发的事件，而忽略之前的所有事件。
// 参数 回调函数 时间间隔
function debounce(fn, delay) {
    let timer = null;
    return function() {
        const context = this;
        const args = arguments;
        clearTimeout(timer);
        timer = setTimeout(function() {
            // 更改this指向为context的指向
            fn.apply(context, args);
        }, delay);
    };
}
// 节流：在一段时间内多次触发同一个事件，每隔一定时间间隔执行一次事件。
function throttle(fn, delay) {
    let timer = null;
    let lastTime = 0;
    return function() {
        const context = this;
        const args = arguments;
        const nowTime = Date.now();
        if (nowTime - lastTime >= delay) {
            fn.apply(context, args);
            lastTime = nowTime;
        } else {
            clearTimeout(timer);
            timer = setTimeout(function() {
                fn.apply(context, args);
                lastTime = nowTime;
            }, delay - (nowTime - lastTime));
        }
    };
}
